// 每一个 entity 结构：
// [
//   "T1", // 唯一标识，用于关联 relation
//   "债权人公司", // type
//   [[1, 14]], // 范围信息数组，虽然是二维数组，但只会有一个范围信息
//   "广州市新誉工程咨询有限公司" // 文本信息（不重要）
// ]

// 获取每一行的 mark
export function getMarks (tspan, row, entities, entityTypesMap) {
  // 空行不显示信息
  if (tspan.type === 'empty') {
    return undefined
  }

  const { start, end } = tspan
  const marks = []
  // 遍历获取该在本行显示的 mark
  entities.forEach(i => {
    const iStart = i[2][0][0]
    const iEnd = i[2][0][1]

    // 不在这一行
    if (iStart > end || iEnd < start) {
      return
    }

    const mark = {
      row,
      id: i[0],
      start: iStart,
      end: iEnd,
      type: i[1],
      text: entityTypesMap[i[1]].name,
      level: 1,
      entityText: i[3],
      entity: i // 先保留源信息，方便调试
    }
    // 完整在这一行
    if (iStart >= start && iEnd <= end) {
      mark.position = 'complete'
    }
    // 中间在这一行
    else if (iStart < start && iEnd > end) {
      mark.position = 'center'
    }
    // 右侧在这一行
    else if (iStart < start) {
      mark.position = 'right'
    }
    // 左侧在这一行
    else if (iEnd > end) {
      mark.position = 'left'
    }
    marks.push(mark)
  })
  return marks.length > 0 ? marks : undefined
}
